import json

from PyQt5.QtWidgets import QMessageBox

from system import run_command


def check_exam_module(filename):

    module_name = filename.split(".")[0].split('/')[-1].strip()
    module_dir = f'/tmp/arm-gia9/{module_name}'
    run_command(f'mkdir -p {module_dir}')
    import zipfile
    with zipfile.ZipFile(filename, 'r') as zip_ref:
        zip_ref.extractall(module_dir)

    necessary_keys = (
        'date',
        'module',
        'discipline'
    )
    try:
        with open(f'{module_dir}/{module_name}.json', 'r') as inp:
            data = json.loads(inp.read())

        if all([i in data for i in necessary_keys]):
            return True

    except Exception as e:
        error_text = f'Импорт из файла {filename} не удался. ' \
                     f'Исключение: {e}'

    else:
        missed_fields = [i for i in necessary_keys if i not in data]
        error_text = f'Импорт из файла {filename} не удался. ' \
                     f'В файле отсутствуют необходимые поля: {", ".join(missed_fields)}'

    dlg = QMessageBox()
    dlg.setWindowTitle('Внимание')
    dlg.setText(error_text)
    dlg.exec_()
    return False
